//
// C++ Interface: BasicViewer
//
// Description: main window of the program, interface
//
// Author: Burkhard Lehner <Burkhard.Lehner@googlemail.com>, (C) 2006

// The main window consists of two classes:
//   MainWindowBase:
//      This class was created with Qt designer (stored in MainWindowBase.ui).
//      It contains the elements of the GUI interface of the main window, but does not contain any code for behavior.
//      Do not use this class directly to create a window, it will show the window, but it will not do anything!
//      The files MainWindowBase.h and MainWindowBase.cpp are created automatically from MainWindowBase.ui.
//      Never add any code to MainWindowBase.h or MainWindowBase.cpp, because these files are created from scratch
//      every time MainWindowBase.ui is modified using Qt designer!
//      Use Qt designer on "MainWindowBase.ui" to add GUI elements to the main window.
//   MainWindow:
//      This is a subclass of MainWindowBase, so it inherits the GUI interface.
//      It contains the program code to set up the windows layout correctly, and to process user interaction.
//      Some of the methods already exist in MainWindowBase as stubs, and are overwritten to perform the desired actions.
//      Change the files MainWindow.h and MainWindow.cpp, if you want to add functionality to the main window
//      (e.g. additional slots or signals).
//      This is the class that defines the complete main window (GUI + behavior). So this is used in main.cpp.

#ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_

#include "ui/ui_MainWindowBase.h"
#include "glbox.h"
//#include "renderobject.h"
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

    public:
        // constructor, creates the main window of the program
        MainWindow (QWidget *parent = 0, const char *name = 0);
        // returns the GLBox widget of the main window
        // use this to get access to the GLBox to add new objects
        GLBox *getGLBox ();

    public slots:
        // these two slots process clicks on the select or move buttons
        void switchToMove ();
        void switchToSelect ();

        // this slot processes the selection of an object of the scene
        //void setSelectedObject (RenderObject *);

        // this slot processes the selection of the menu entry "Exit"
        void fileExit ();

    private:
        GLBox *glbox;
        //RenderObject *selectedObject;
	Ui::MainWindowBase ui;
};

#endif
